/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ifrr.gepro.projeto.handler;

import br.ifrr.gepro.acesso.handler.UsuarioMB;
import br.ifrr.gepro.pessoa.bean.ClienteBean;
import br.ifrr.gepro.pessoa.dao.ClienteDao;
import br.ifrr.gepro.projeto.bean.EquipeBean;
import br.ifrr.gepro.projeto.bean.ProjetoBean;
import br.ifrr.gepro.projeto.dao.EquipeDao;
import br.ifrr.gepro.projeto.dao.ProjetoDao;
import br.ifrr.gepro.sprint.dao.SprintDao;
import br.ifrr.gepro.util.DAOException;
import br.ifrr.gepro.util.JsfUtil;
import br.ifrr.gepro.util.Navegacao;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

/**
 *
 * @author rafael
 */
@ManagedBean(name = "projeto")
@SessionScoped
public class ProjetoMB {

    private ProjetoBean novoprojeto = new ProjetoBean();
    private HtmlSelectOneMenu equipeSelecionada = new HtmlSelectOneMenu();
    private HtmlSelectOneMenu clienteSelecionado = new HtmlSelectOneMenu();
    private ArrayList<ProjetoBean> listaProjetos = new ArrayList<ProjetoBean>();

    public HtmlSelectOneMenu getClienteSelecionado() {
        return clienteSelecionado;
    }

    public void setClienteSelecionado(HtmlSelectOneMenu clienteSelecionado) {
        this.clienteSelecionado = clienteSelecionado;
    }

    public HtmlSelectOneMenu getEquipeSelecionada() {
        return equipeSelecionada;
    }

    public void setEquipeSelecionada(HtmlSelectOneMenu tecnicoSelecionado) {
        this.equipeSelecionada = tecnicoSelecionado;
    }

    public String preparaCadastro() {

        novoprojeto = new ProjetoBean();
        return Navegacao.paginaCadProjeto;
    }

    public String editar() throws DAOException {
        int p = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idProjeto"));
        novoprojeto = (ProjetoBean) new ProjetoDao().selecionar(p);
        return Navegacao.paginaCadProjeto;
    }
    public String visualizarAndamento()throws DAOException{
        return null;
    }     
    public String excluir() throws DAOException {
        int p = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("idProjeto"));
        try {
            new ProjetoDao().excluir(new ProjetoBean(p));
            JsfUtil.showMessageInfo("Operação realizada com Sucesso!");
        } catch (Exception ex) {
            int sprints = new SprintDao().pesquisar("fk_proj", String.valueOf(p)).size();
            JsfUtil.showMessageErro("Não foi possível excluir o projeto.");
            JsfUtil.showMessageErro("Existe(m) " + sprints + " Sprints cadastrado(s) neste projeto.");
        }
        return null;
    }

    public String salvar() throws DAOException {
        novoprojeto.setFkCliente((ClienteBean) new ClienteDao().selecionar(Integer.parseInt(clienteSelecionado.getValue().toString())));
        novoprojeto.setFkEquipe((EquipeBean) new EquipeDao().selecionar(Integer.parseInt(equipeSelecionada.getValue().toString())));

        if (novoprojeto.getIdProjeto() == null) {
            new ProjetoDao().inserir(getNovoprojeto());
        } else {
            new ProjetoDao().alterar(getNovoprojeto());
        }
        JsfUtil.showMessageInfo("Cadastro realizado com sucesso!");
        setNovoprojeto(new ProjetoBean());
        return Navegacao.paginaListProjeto;
    }

    /**
     * @return the novoprojeto
     */
    public ProjetoBean getNovoprojeto() {
        return novoprojeto;
    }

    /**
     * @param novoprojeto the novoprojeto to set
     */
    public void setNovoprojeto(ProjetoBean novoprojeto) {
        this.novoprojeto = novoprojeto;
    }

    public ArrayList<ProjetoBean> getListaProjetos() throws DAOException {
        listaProjetos = (ArrayList<ProjetoBean>) new ProjetoDao().listar();
        return listaProjetos;
    }

    public void setListaProjetos(ArrayList<ProjetoBean> listaProjetos) {
        this.listaProjetos = listaProjetos;
    }

    public List<ProjetoBean> getProjetos() throws DAOException {
        return new ProjetoDao().listar();

    }

    public List<SelectItem> getProjetosCombo() throws DAOException {
        List<SelectItem> lista = new ArrayList<SelectItem>();
        for (ProjetoBean p : getProjetos()) {
            lista.add(new SelectItem(p.getIdProjeto(), p.getNome()));
        }
        return lista;
    }
    
    public ArrayList<ProjetoBean> getListaProjetos2() throws DAOException {
        UsuarioMB u = (UsuarioMB) JsfUtil.getMB("usuario");
        listaProjetos = (ArrayList<ProjetoBean>) new ProjetoDao().listarPorCliente(u.getUsuario().getFkCliente().getIdCliente());
        return listaProjetos;
    }
}
